package Negocio;
//import java.util.*;

import java.sql.Date;
import java.sql.Time;
import java.util.Calendar;
import org.apache.commons.collections.MapUtils;

/**
 * @author Diego
 * @version 1.0
 * @created 28-sep-2013 21:39:01 p.m.
 */
public class Ingreso {

    private Integer idIngreso;
    private MateriaPrima materiaPrima;
    private Personal chofer;
    private Agricola vehiculo;
    private Date fecha;
    private Time hora;

    private int pesoBruto;
    private int pesoTara;

    //constructores
    public Ingreso() {

    }

    public Ingreso(Date fecha, Time hora, YerbaMateVerde materiaPrima, Personal empleado, Agricola vehiculo, int pesoBruto, int pesoTara) {
        this.fecha = fecha;
        this.hora = hora;
        this.materiaPrima = materiaPrima;
        this.chofer = empleado;
        this.vehiculo = vehiculo;
        this.pesoBruto = pesoBruto;
        this.pesoTara = pesoTara;
        Empresa.persistencia.insert(this);
    }

    public Ingreso(Date fecha, Time hora, YerbaMateCanchada materiaPrima, Personal empleado, Agricola vehiculo, int pesoBruto, int pesoTara) {
        this.fecha = fecha;
        this.hora = hora;
        this.materiaPrima = materiaPrima;
        this.chofer = empleado;
        this.vehiculo = vehiculo;
        this.pesoBruto = pesoBruto;
        this.pesoTara = pesoTara;
        Empresa.persistencia.insert(this);
    }

    public Ingreso(Date fecha, Time hora, LeniaVerde materiaPrima, Personal empleado, Agricola vehiculo, int pesoBruto, int pesoTara) {
        this.fecha = fecha;
        this.hora = hora;
        this.materiaPrima = materiaPrima;
        this.chofer = empleado;
        this.vehiculo = vehiculo;
        this.pesoBruto = pesoBruto;
        this.pesoTara = pesoTara;
        Empresa.persistencia.insert(this);
    }

    public Ingreso(Date fecha, Time hora, LeniaSeca materiaPrima, Personal empleado, Agricola vehiculo, int pesoBruto, int pesoTara) {
        this.fecha = fecha;
        this.hora = hora;
        this.materiaPrima = materiaPrima;
        this.chofer = empleado;
        this.vehiculo = vehiculo;
        this.pesoBruto = pesoBruto;
        this.pesoTara = pesoTara;
        Empresa.persistencia.insert(this);
    }

    @Override
    public String toString() {
        /*
         String origen = "";
         String tipo = "";
        
         if (materiaPrima != null) {
         if (materiaPrima.getTipo().equals("YerbaMateVerde")) {
         YerbaMateVerde mp = (YerbaMateVerde) materiaPrima;
         tipo = mp.getTipo();
         origen = mp.origen;
         }
         if (materiaPrima.getTipo().equals("YerbaMateCanchada")) {
         YerbaMateCanchada mp = (YerbaMateCanchada) materiaPrima;
         tipo = mp.getTipo();
         origen = mp.origen;
         }
         }
         */
        return this.fecha + " | " + this.hora + " | " + materiaPrima.getTipo() + " | "
                + materiaPrima.getOrigen() + " | " + Integer.toString(materiaPrima.getKilaje()) + "Kg";
        //return this.fecha + "|" + this.hora + "|" + materiaPrima;
    }

    public Integer getIdIngreso() {
        return idIngreso;
    }

    public void setIdIngreso(Integer idIngreso) {
        this.idIngreso = idIngreso;
    }

    public MateriaPrima getMateriaPrima() {
        return materiaPrima;
    }

    public YerbaMateVerde getYerbaMateVerde() {
        return (YerbaMateVerde) materiaPrima;
    }

    public void setMateriaPrima(MateriaPrima materiaPrima) {
        this.materiaPrima = materiaPrima;
    }

    public Personal getChofer() {
        return chofer;
    }

    public void setChofer(Personal empleado) {
        this.chofer = empleado;
    }

    public Agricola getVehiculo() {
        return vehiculo;
    }

    public void setVehiculo(Agricola vehiculo) {
        this.vehiculo = vehiculo;
    }

    public int getPesoBruto() {
        return pesoBruto;
    }

    public void setPesoBruto(int pesoBruto) {
        this.pesoBruto = pesoBruto;
    }

    public int getPesoTara() {
        return pesoTara;
    }

    public void setPesoTara(int pesoTara) {
        this.pesoTara = pesoTara;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public Time getHora() {
        return hora;
    }

    public void setHora(Time hora) {
        this.hora = hora;
    }

    //Metodos
    public int kilajeTotal() {
        int kilaje = pesoBruto - pesoTara;
        return kilaje;
    }
    
    public int mes(){ //Retorna el mes correspondiente del registro
        Calendar cal = Calendar.getInstance();
        cal.setTime(this.fecha);
        int month = cal.get(Calendar.MONTH);
        return month + 1;
            
    }
    
    public int anio(){
        Calendar cal = Calendar.getInstance();
        cal.setTime(this.fecha);
        int year = cal.get(Calendar.YEAR);
        return year;       
    }

}
